import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:shop/config/config.dart';
import 'package:shop/http/HttpUtil.dart';
import 'package:shop/route/my_route.dart';
import 'package:shop/shop/life/RefundType.dart';

import 'OrderDetail.dart';

class WeiFaHuo extends StatefulWidget {
  List list;
  WeiFaHuo(this.list);
  @override
  _WeiFaHuo createState() => _WeiFaHuo();
}

class _WeiFaHuo extends State<WeiFaHuo>
     {
       List orderList=[];
       // 分页当前页
       int page=1;
       // 上拉加载控制器
       RefreshController _refreshController = RefreshController(initialRefresh: false);
       _WeiFaHuo(){
         _onLoading();
       }

       // 刷新时调用
       void _onRefresh() async{
         // monitor network fetch
         //await Future.delayed(Duration(milliseconds: 1000));
         // _onLoading();
         // if failed,use refreshFailed()
         _refreshController.refreshCompleted();
       }

       // 加载数据的函数
       void _onLoading() async{
         // 获取内存存储的用户id
         SharedPreferences prefs = await SharedPreferences.getInstance();
         String userId = prefs.getString("userId");
         // monitor network fetch
         // await Future.delayed(Duration(milliseconds: 1000));
         // Response response = await Dio().get("http://xllm.szghrj.com:8082/app/order/searchUserOrder?limit=10&orPeisongType=1&orStatus=1&page=${page}&userId=${userId}");
         // var x = json.decode(response.toString());
         var x = await HttpUtil().get("/app/order/searchUserOrder?limit=10&orPeisongType=1&orStatus=1&page=${page}&userId=${userId}");
         page++;
         if(x['code']==200){
           orderList.addAll(x['data']);
         }
         if(x['data'].length<1){
           _refreshController.loadNoData();
           return;
         }
         // if failed,use loadFailed(),if no data return,use LoadNodata()
         if(mounted){
           setState(() {});
           _refreshController.loadComplete();
         }
       }

       // 显示订单支付按钮/收货按钮
       Widget showOrderBtn(obj){
         String s="";
         switch(obj['orStatus']){
           case 0:s="立即支付";break;
           case 2:s="立即收货";break;
           case 1:s="申请退款";break;
         }
         return s=="" ? null: Center(child:Text(s,style: TextStyle(color: Colors.white),));
       }
       // 显示订单状态
       Widget showOrderStatus(obj){
         String s="待付款";
         switch(obj['orStatus']){
           case 0:s="待付款";break;
           case 1:s="待发货";break;
           case 2:s="待收货";break;
           case 3:s="已完成";break;
           case 4:s="退换货中";break;
           case 6:s="退款成功";break;
         }
         return Text(s,style: TextStyle(color: Colors.red),);
       }
       // 显示订单
       GestureDetector _showOrders(item) {
         // 解析订单详情
         var orderDetail =(item['orderDetailList']) ;
         return GestureDetector(
           child: Container( // 一个订单信息
             // margin: EdgeInsets.fromLTRB(10, 10, 10, 40 ),
               width: ScreenUtil().setWidth(464),
               decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.all(Radius.circular(10))),
               child:SingleChildScrollView(
                 child:
                 Column(
                   children: [
                     Row(
                       mainAxisAlignment: MainAxisAlignment.spaceBetween,
                       children: [
                         Text("官方旗舰店"),
                         showOrderStatus(item),
                       ],
                     ),
                     Row(
                       mainAxisAlignment: MainAxisAlignment.spaceBetween,
                       children: [
                         CachedNetworkImage(imageUrl: Config.getInstance().getHost()+orderDetail[0]['goods']['gimages'],width:ScreenUtil().setWidth(70),height: ScreenUtil().setHeight(70),),
                         Column(children: [
                           Container(width:ScreenUtil().setWidth(290),height:ScreenUtil().setHeight(25),child: Text("${orderDetail[0]['goods']['gname']}"),),
                           Container(width:ScreenUtil().setWidth(290),height:ScreenUtil().setHeight(55),child: Text("${orderDetail[0]['goods']['jianjie']}",style: TextStyle(color: Colors.black12),))
                         ],),
                         Column(children: [
                           Container(child: Text("￥${orderDetail[0]['odCost']}"),),
                           Container(child: Text("*${orderDetail[0]['odNum']}"),),
                         ],)
                       ],
                     ),
                     Divider(),
                     Row(
                       mainAxisAlignment: MainAxisAlignment.spaceBetween,
                       children: [
                         Container(child: Text("共${orderDetail[0]['odNum']}件"),),
                         Container(child: Row(children: [
                           // Container(child: Text("总价:￥${item['orPrice']}",style: TextStyle(color: Colors.black12),),),
                           Container(child: Text("实付:￥${item['orPrice']}"),),
                         ],)),

                       ],
                     ),
                     Row(
                         mainAxisAlignment: MainAxisAlignment.end,
                         children: [
                           GestureDetector(child:
                           Container(
                               width:80,
                               // padding: EdgeInsets.fromLTRB(0, 5, 0, 5),
                               child: showOrderBtn(item),
                               decoration: BoxDecoration(
                                 color: Colors.deepOrange,
                                 borderRadius: BorderRadius.all(Radius.circular(20.0)),
                               )
                           ),onTap: () async {
                              var value = await  MyRoute.push(RefundType(odid: item['odId'],orid: item['orId'],gid: item['gid'],orStatus: '1',));
                              if(value==1){
                                MyRoute.pop(1);
                              }
                           })
                         ]
                     )
                   ],
                 ),
               )
           ),
           onTap: (){
             MyRoute.push(OrderDetail(orid:item['orId'],orStatus: item['orStatus'].toString()));
             // Navigator.push(
             //     context,
             //     MaterialPageRoute(
             //       builder:(context)=>OrderDetail(orid:item['orId'],orStatus: item['orStatus'].toString()),
             //     )
             // );
           },
         );
       }
       @override
       Widget build(BuildContext context) {
         return Scaffold(
           body: SmartRefresher(
             enablePullDown: false,
             enablePullUp: true,
             header: WaterDropHeader(),
             footer: CustomFooter(
               builder: (BuildContext context,LoadStatus mode){
                 Widget body ;
                 if(mode==LoadStatus.idle){
                   body =  Text("上拉加载");
                 }
                 else if(mode==LoadStatus.loading){
                   body =  CupertinoActivityIndicator();
                 }
                 else if(mode == LoadStatus.failed){
                   body = Text("加载失败！点击重试！");
                 }
                 else if(mode == LoadStatus.canLoading){
                   body = Text("松手,加载更多!");
                 }
                 else{
                   body = Text("没有更多数据了!");
                 }
                 return Container(
                   height: 55.0,
                   child: Center(child:body),
                 );
               },
             ),
             controller: _refreshController,
             onRefresh: _onRefresh,
             onLoading: _onLoading,
             child: ListView.builder(
               itemBuilder: (c, i) => Card(child: _showOrders(orderList[i])),
               itemExtent: 160.0,    // 每个的高度
               itemCount: orderList.length,
             ),
           ),
         );
       }

       @override
       // TODO: implement wantKeepAlive
       bool get wantKeepAlive => true;
     }